home *** CD-ROM | disk | FTP | other *** search
/ Aminet 6 / Aminet 6 - June 1995.iso / Aminet / gfx / 3d / irit50src.lha / irit5 / scripts / playgrnd.irt < prev    next >
Encoding:
Text File  |  1994-09-04  |  20.1 KB  |  568 lines

  1. #
  2. # Playground model.
  3. #
  4. #                Gershon Elber, December 1993
  5. #
  6.  
  7. #
  8. # A chair base, to be used by most games below.
  9. #
  10. ChairBaseCrv = cbspline( 3,
  11.                  list( ctlpt( E3,  0.6, 0.0, 0.0 ),
  12.                    ctlpt( E3,  0.3, 0.0, 0.05 ),
  13.                    ctlpt( E3,  0.0, 0.0, 0.0 ) ),
  14.                  list( KV_OPEN ) );
  15. ChairBaseCross = arc( vector(  0.25,  0.05,  0.0 ),
  16.               vector(  0.25,  0.0,   0.0 ),
  17.               vector(  0.3,   0.0,   0.0 ) ) +
  18.          arc( vector(  0.3,   0.0,   0.0 ),
  19.               vector(  0.25,  0.0,   0.0 ),
  20.               vector(  0.25, -0.05,  0.0 ) ) +
  21.          cbspline( 3,
  22.                    list( ctlpt( E3,  0.25, -0.05, 0.0 ),
  23.                  ctlpt( E3,  0.22, -0.05, 0.0 ),
  24.                  ctlpt( E3,  0.0, 0.0, 0.0 ),
  25.                  ctlpt( E3, -0.22, -0.05, 0.0 ),
  26.                  ctlpt( E3, -0.25, -0.05, 0.0 ) ),
  27.                list( KV_OPEN ) ) +
  28.          arc( vector( -0.25, -0.05,  0.0 ),
  29.               vector( -0.25,  0.0,   0.0 ),
  30.               vector( -0.3,   0.0,   0.0 ) ) +
  31.          arc( vector( -0.3,   0.0,   0.0 ),
  32.               vector( -0.25,  0.0,   0.0 ),
  33.               vector( -0.25,  0.05,  0.0 ) ) +
  34.          ctlpt( E3, 0.25, 0.05, 0.0 );
  35. ChairBaseMain = sweepSrf( ChairBaseCross * rotz( 90 ), ChairBaseCrv, off );
  36.  
  37. ChairCrv1 = cmesh( ChairBaseMain, ROW, 0 );
  38. ChairCrv1a = ChairCrv1 * trans( vector( 0.06, 0.0, -0.02 ) );
  39. ChairCrv1b = ChairCrv1 * scale( vector( 0.0, 0.83, 0.0 ) ) *
  40.              trans( vector( 0.66, 0.0, -0.02 ) );
  41. ChairBaseCover1 = sFromCrvs( list( ChairCrv1, ChairCrv1a, ChairCrv1b ), 3 );
  42.  
  43. ChairCrv2 = cmesh( ChairBaseMain, ROW, 2 );
  44. ChairCrv2a = ChairCrv2 * trans( vector( -0.06, 0.0, -0.02 ) );
  45. ChairCrv2b = ChairCrv2 * scale( vector( 0.0, 0.83, 0.0 ) ) *
  46.              trans( vector( -0.06, 0.0, -0.02 ) );
  47. ChairBaseCover2 = sFromCrvs( list( ChairCrv2, ChairCrv2a, ChairCrv2b ), 3 );
  48.  
  49. ChairBase = list( ChairBaseMain, ChairBaseCover1, ChairBaseCover2 ) *
  50.                     scale( vector( 0.75, 1.0, 1.0 ) );
  51. color( ChairBase, yellow );
  52. attrib( ChairBase, "texture", "wood" );
  53. attrib( ChairBase, "rgb", "244,164,96" );
  54.  
  55. #
  56. # A full free form chair (same as in dinner.irt).
  57. #
  58. ChairSwpCrv = cbspline( 3,
  59.                 list( ctlpt( E3,  0.6, 0.0, 0.5 ),
  60.                   ctlpt( E3,  0.3, 0.0, 0.6 ),
  61.                   ctlpt( E3,  0.0, 0.0, 0.5 ),
  62.                   ctlpt( E3, -0.1, 0.0, 0.5 ),
  63.                   ctlpt( E3, -0.1, 0.0, 0.6 ),
  64.                   ctlpt( E3,  0.0, 0.0, 0.9 ),
  65.                   ctlpt( E3, -0.1, 0.0, 1.2 ) ),
  66.                 list( KV_OPEN ) );
  67. ChairSwpCrv = crefine( ChairSwpCrv, false,
  68.                list( 0.01, 0.1, 0.2, 0.3, 4.7, 4.8, 4.9, 4.99 ) );
  69.  
  70. ChairCoverMain = sweepSrf( ChairBaseCross, ChairSwpCrv, off );
  71. color( ChairCoverMain, yellow );
  72. attrib( ChairCoverMain, "texture", "wood" );
  73. attrib( ChairCoverMain, "rgb", "244,164,96" );
  74.  
  75. ChairCover1 = cmesh( ChairCoverMain, ROW, 14 );
  76. ChairCover1a = ChairCover1 * trans( vector( -0.018, 0.0, 0.06 ) );
  77. ChairCover1b = ChairCover1 * scale( vector( 0.0, 0.83, 0.0 ) ) *
  78.                  trans( vector( -0.124, 0.0, 1.26 ) );
  79. ChairCoverTop = sFromCrvs( list( ChairCover1,  ChairCover1a, ChairCover1b ),
  80.                3 );
  81. color( ChairCoverTop, yellow );
  82. attrib( ChairCoverTop, "texture", "wood" );
  83. attrib( ChairCoverTop, "rgb", "244,164,96" );
  84.  
  85. ChairCover2 = cmesh( ChairCoverMain, ROW, 0 );
  86. ChairCover2a = ChairCover2 * trans( vector( 0.06, 0.0, -0.02 ) );
  87. ChairCover2b = ChairCover2 * scale( vector( 0.0, 0.83, 0.0 ) ) *
  88.                  trans( vector( 0.66, 0.0, 0.48 ) );
  89. ChairCoverBot = sFromCrvs( list( ChairCover2, ChairCover2a, ChairCover2b ),
  90.                3 );
  91. color( ChairCoverBot, yellow );
  92. attrib( ChairCoverBot, "texture", "wood" );
  93. attrib( ChairCoverBot, "rgb", "244,164,96" );
  94.  
  95. Chair = list( ChairCoverMain, ChairCoverBot, ChairCoverTop );
  96.  
  97. #
  98. # Carousel
  99. #
  100. CarouselTube = sweepSrf( circle( vector( 0, 0, 0 ), 0.01 ),
  101.              cbspline( 3,
  102.                        list( ctlpt( E3,  1.0,  0.0, 0.2 ),
  103.                          ctlpt( E3,  1.0,  0.0, 0.02 ),
  104.                          ctlpt( E3,  1.0,  0.0, 0.0 ),
  105.                          ctlpt( E3,  0.98, 0.0, 0.0 ),
  106.                          ctlpt( E3,  0.5,  0.0, 0.0 ),
  107.                          ctlpt( E3,  0.0,  0.0, 0.2 ),
  108.                          ctlpt( E3, -0.5,  0.0, 0.0),
  109.                          ctlpt( E3, -0.98, 0.0, 0.0 ),
  110.                          ctlpt( E3, -1.0,  0.0, 0.0 ),
  111.                          ctlpt( E3, -1.0,  0.0, 0.02 ),
  112.                          ctlpt( E3, -1.0,  0.0, 0.2 ) ),
  113.                    list( KV_OPEN ) ),
  114.              off );
  115. color( CarouselTube, red );
  116. attrib( CarouselTube, "reflect", 0.9 );
  117.  
  118. CarouselRod1 = list( CarouselTube,
  119.              ChairBase * scale( vector( 0.35, 0.35, 0.35 ) )
  120.                    * trans( vector( -0.93, 0.0, 0.03 ) ),
  121.              ChairBase * roty( 90 )
  122.                    * scale( vector( 0.35, 0.35, 0.35 ) )
  123.                    * trans( vector( -0.98, 0.0, 0.25 ) ),
  124.              ChairBase * scale( vector( 0.35, 0.35, 0.35 ) )
  125.                    * trans( vector( -0.93, 0.0, 0.03 ) )
  126.                    * rotz( 180 ),
  127.              ChairBase * roty( 90 )
  128.                    * scale( vector( 0.35, 0.35, 0.35 ) )
  129.                    * trans( vector( -0.98, 0.0, 0.25 ) )
  130.                    * rotz( 180 ) );
  131. CarouselRod2 = CarouselRod1 * rotz( 45 );
  132. CarouselRod3 = CarouselRod1 * rotz( 90 );
  133. CarouselRod4 = CarouselRod1 * rotz( 135 );
  134.  
  135. CarouselRods = list( CarouselRod1, CarouselRod2, CarouselRod3, CarouselRod4 );
  136.  
  137. CarouselBase = surfRev( cbspline( 3,
  138.                   list( ctlpt( E3, 0.001,  0.0, 0.5 ),
  139.                     ctlpt( E3, 0.03, 0.0, 0.5 ),
  140.                     ctlpt( E3, 0.03, 0.0, 0.35 ),
  141.                     ctlpt( E3, 0.06, 0.0, 0.2 ),
  142.                     ctlpt( E3, 0.07, 0.0, 0.06 ),
  143.                     ctlpt( E3, 0.13, 0.0, 0.015 ),
  144.                     ctlpt( E3, 0.13, 0.0, 0.0 ) ),
  145.                   list( KV_OPEN ) ) );
  146. color( CarouselBase, green );
  147. attrib( CarouselBase, "reflect", 0.9 );
  148.  
  149. Carousel = list( CarouselBase,
  150.          CarouselRods * trans( vector ( 0.0, 0.0, 0.3 ) ) );
  151.  
  152. #
  153. # A swing
  154. #
  155. SwingSideRod = sweepSrf( circle( vector( 0, 0, 0 ), 0.01 ),
  156.              cbspline( 3,
  157.                        list( ctlpt( E3,  0.2,  0.0, -0.05 ),
  158.                          ctlpt( E3,  0.1,  0.0,  0.95 ),
  159.                          ctlpt( E3,  0.05, 0.0,  1.0 ),
  160.                          ctlpt( E3, -0.05, 0.0,  1.0 ),
  161.                          ctlpt( E3, -0.1,  0.0,  0.95 ),
  162.                      ctlpt( E3, -0.2,  0.0, -0.05 ) ),
  163.                    list( KV_OPEN ) ),
  164.              off );
  165. SwingFrame = list( SwingSideRod * trans( vector( 0.0, -1.0, 0.0 ) ),
  166.            SwingSideRod * trans( vector( 0.0, 1.0, 0.0 ) ),
  167.            extrude( circle( vector( 0, 0, 0 ), 0.01 ),
  168.                   vector( 0.0, 0.0, 2.0 ) ) *
  169.                rotx( -90 ) *
  170.                trans( vector( 0.0, -1.0, 1.0 ) ) );
  171. color( SwingFrame, red );
  172. attrib( SwingFrame, "reflect", 0.5 );
  173.  
  174. SwingChairRods = list( extrude( circle( vector( 0, 0, 0 ), 0.02 ),
  175.                 vector( 0.0, 0.0, 0.03 ) ) *
  176.                rotx( -90 ) *
  177.                trans( vector( 0.0, -0.015, 1.0 ) ),
  178.                extrude( circle( vector( 0, 0, 0.2 ), 0.01 ),
  179.                 vector( 0.0, 0.0, 0.8 ) ),
  180.                extrude( circle( vector( 0, 0, 0.2 ), 0.007 ),
  181.                 vector( 0.0, 0.0, -0.07 ) ) *
  182.                roty( 90 ) *
  183.                trans( vector( -0.2, 0.0, 0.27 ) ) );
  184. SwingChair1Rods = list( SwingChairRods * trans( vector( 0.0, -0.07, 0.0 ) ),
  185.             SwingChairRods * trans( vector( 0.0,  0.07, 0.0 ) ) );
  186. color( SwingChair1Rods, green );
  187. attrib( SwingChair1Rods, "reflect", 0.9 );
  188. SwingChair1 = list( SwingChair1Rods,
  189.             Chair * scale( vector( 0.25, 0.28, 0.25 ) )
  190.               * trans( vector( -0.07, 0.0, 0.05 ) ) );
  191.  
  192. SwingChair2Rods = list( SwingChairRods * trans( vector( 0.0,  0.53, 0.0 ) ),
  193.             SwingChairRods * trans( vector( 0.0,  0.67, 0.0 ) ) );
  194. color( SwingChair2Rods, yellow );
  195. attrib( SwingChair2Rods, "reflect", 0.9 );
  196. SwingChair2 = list( SwingChair2Rods,
  197.             Chair * scale( vector( 0.25, 0.28, 0.25 ) )
  198.               * trans( vector( -0.07, 0.6, 0.05 ) ) );
  199.  
  200. SwingChair3Rods = list( SwingChairRods * trans( vector( 0.0,  -0.53, 0.0 ) ),
  201.             SwingChairRods * trans( vector( 0.0,  -0.67, 0.0 ) ) );
  202. color( SwingChair3Rods, cyan );
  203. attrib( SwingChair3Rods, "reflect", 0.9 );
  204. SwingChair3 = list( SwingChair3Rods,
  205.             Chair * scale( vector( 0.25, 0.28, 0.25 ) )
  206.               * trans( vector( -0.07, -0.6, 0.05 ) ) );
  207.  
  208. Swing = list( SwingFrame, SwingChair1, SwingChair2, SwingChair3 );
  209.  
  210. #
  211. # A straight slide.
  212. #
  213. SlideCross = arc( vector(  0.28,  0.06,  0.0 ),
  214.           vector(  0.28,  0.04,  0.0 ),
  215.           vector(  0.26,  0.04,  0.0 ) ) +
  216.          arc( vector(  0.26, -0.02,  0.0 ),
  217.           vector(  0.24, -0.02,  0.0 ),
  218.           vector(  0.24, -0.04,  0.0 ) ) +
  219.          arc( vector( -0.24, -0.04,  0.0 ),
  220.           vector( -0.24, -0.02,  0.0 ),
  221.           vector( -0.26, -0.02,  0.0 ) ) +
  222.          arc( vector( -0.26,  0.04,  0.0 ),
  223.           vector( -0.28,  0.04,  0.0 ),
  224.           vector( -0.28,  0.06,  0.0 ) ) +
  225.          arc( vector( -0.28,  0.06,  0.0 ),
  226.           vector( -0.28,  0.04,  0.0 ),
  227.           vector( -0.3,   0.04,  0.0 ) ) +
  228.          arc( vector( -0.3,  -0.04,  0.0 ),
  229.           vector( -0.28, -0.04,  0.0 ),
  230.           vector( -0.28, -0.06,  0.0 ) ) +
  231.          arc( vector(  0.28, -0.06,  0.0 ),
  232.           vector(  0.28, -0.04,  0.0 ),
  233.           vector(  0.3,  -0.04,  0.0 ) ) +
  234.          arc( vector(  0.3,   0.04,  0.0 ),
  235.           vector(  0.28,  0.04,  0.0 ),
  236.           vector(  0.28,  0.06,  0.0 ) );
  237.  
  238. SlideSlopeCrv = cbspline( 3,
  239.               list( ctlpt( E3, -0.6,  0.0,  0.1 ),
  240.                 ctlpt( E3, -0.6,  0.0,  0.2 ),
  241.                 ctlpt( E3, -0.5,  0.0,  0.2 ),
  242.                 ctlpt( E3, -0.2,  0.0,  0.2 ),
  243.                 ctlpt( E3,  0.0,  0.0,  0.3 ),
  244.                 ctlpt( E3,  1.0,  0.0,  0.9 ),
  245.                 ctlpt( E3,  1.05, 0.0,  0.9 ),
  246.                 ctlpt( E3,  1.3,  0.0,  0.9 ) ),
  247.               list ( KV_OPEN ) );
  248. SlideSlope = sweepSrf( SlideCross * rotz( 90 )
  249.                   * scale( vector( 0.4, 0.4, 0.4 ) ),
  250.                SlideSlopeCrv, off );
  251. color( SlideSlope, yellow );
  252. attrib( SlideSlope, "resolution", 2.0 );
  253.  
  254. SlideSlopeSupport = list( extrude( circle( vector( 0, 0, 0.0 ), 0.007 ),
  255.                    vector( 0.0, 0.0, 0.111 ) ) *
  256.                    trans( vector( -0.615, 0.112, -0.01 ) ),
  257.               extrude( circle( vector( 0, 0, 0.0 ), 0.007 ),
  258.                    vector( 0.0, 0.0, 0.111 ) ) *
  259.                    trans( vector( -0.615, -0.112, -0.01 ) ) );
  260. color( SlideSlopeSupport, white );
  261. attrib( SlideSlopeSupport, "reflect", 0.99 );
  262.  
  263. SlideSideSupport =
  264.    list( sweepSrf( circle( vector( 0, 0, 0 ), 0.015 ),
  265.            cbspline( 3,
  266.                  list( ctlpt( E3,  1.3,  0.0,  0.0 ),
  267.                    ctlpt( E3,  1.3,  0.0,  1.0 ),
  268.                    ctlpt( E3,  1.3,  0.0,  1.2 ),
  269.                    ctlpt( E3,  1.2,  0.0,  1.3 ),
  270.                    ctlpt( E3,  1.1,  0.0,  1.3 ),
  271.                    ctlpt( E3,  1.01, 0.0,  1.2 ),
  272.                    ctlpt( E3,  1.01, 0.0,  0.9 ) ),
  273.                  list( KV_OPEN ) ),
  274.            off ),
  275.      sweepSrf( circle( vector( 0, 0, 0 ), 0.01 ),
  276.            cbspline( 3,
  277.                  list( ctlpt( E3,  2.1,  0.0,  0.0 ),
  278.                    ctlpt( E3,  2.1,  0.0,  0.35 ),
  279.                    ctlpt( E3,  2.05, 0.0,  0.4 ),
  280.                    ctlpt( E3,  1.29,  0.0,  1.18 ) ),
  281.                  list( KV_OPEN ) ),
  282.            off ) );
  283. color( SlideSideSupport, white );
  284. attrib( SlideSideSupport, "reflect", 0.99 );
  285.  
  286. SlideStairs = extrude( ctlpt( E3, 1.3, -0.12, 0.9 ) +
  287.                ctlpt( E3, 1.3, -0.12, 0.8 ) +
  288.                ctlpt( E3, 1.4, -0.12, 0.8 ) +
  289.                ctlpt( E3, 1.4, -0.12, 0.7 ) +
  290.                ctlpt( E3, 1.5, -0.12, 0.7 ) +
  291.                ctlpt( E3, 1.5, -0.12, 0.6 ) +
  292.                ctlpt( E3, 1.6, -0.12, 0.6 ) +
  293.                ctlpt( E3, 1.6, -0.12, 0.5 ) +
  294.                ctlpt( E3, 1.7, -0.12, 0.5 ) +
  295.                ctlpt( E3, 1.7, -0.12, 0.4 ) +
  296.                ctlpt( E3, 1.8, -0.12, 0.4 ) +
  297.                ctlpt( E3, 1.8, -0.12, 0.3 ) +
  298.                ctlpt( E3, 1.9, -0.12, 0.3 ) +
  299.                ctlpt( E3, 1.9, -0.12, 0.2 ) +
  300.                ctlpt( E3, 2.0, -0.12, 0.2 ) +
  301.                ctlpt( E3, 2.0, -0.12, 0.1 ) +
  302.                ctlpt( E3, 2.1, -0.12, 0.1 ) +
  303.                ctlpt( E3, 2.1, -0.12, 0.0 ),
  304.               vector( 0.0, 0.24, 0.0 ) );
  305.  
  306. Slide = list( SlideSlope,
  307.           SlideStairs,
  308.           SlideSlopeSupport,
  309.           SlideSideSupport * trans( vector( 0.0,  0.12, 0.0 ) ),
  310.           SlideSideSupport * trans( vector( 0.0, -0.12, 0.0 ) ) );
  311.  
  312. #
  313. # Sand box for the slide.
  314. #
  315. SandBoxBoundary = cbspline( 3,
  316.                 list( ctlpt( E3,  0.5,  0.0,  0.03 ),
  317.                   ctlpt( E3,  0.5,  0.7,  0.03 ),
  318.                   ctlpt( E3, -0.5,  0.7,  0.03 ),
  319.                   ctlpt( E3, -1.5,  0.7,  0.03 ),
  320.                   ctlpt( E3, -1.9,  0.0,  0.03 ),
  321.                   ctlpt( E3, -1.5, -0.9,  0.03 ),
  322.                   ctlpt( E3, -1.0, -0.7,  0.03 ),
  323.                   ctlpt( E3, -0.5, -0.4,  0.03 ),
  324.                   ctlpt( E3,  0.5, -0.6,  0.03 ),
  325.                   ctlpt( E3,  0.5,  0.0,  0.03 ) ),
  326.                 list( KV_OPEN ) );
  327. SandBoxWall = sweepSrf( ( ctlpt( E3, -0.03, 0.0, -0.05 ) +
  328.                   ctlpt( E3, -0.03, 0.0,  0.05) +
  329.                   ctlpt( E3,  0.1,   0.0,  0.05 ) +
  330.                   ctlpt( E3,  0.1,   0.0, -0.05 ) +
  331.                   ctlpt( E3, -0.03, 0.0, -0.05 ) ) * rotx( 90 ),
  332.             SandBoxBoundary,
  333.             vector( 0, 0, 1 ) );
  334. color( SandBoxWall, red );
  335. attrib( SandBoxWall, "rgb", "244,50,50" );
  336. attrib( SandBoxWall, "reflect", 0.1 );
  337. attrib( SandBoxWall, "resolution", 4.0 );
  338.  
  339. SandBoxSand = ruledSrf( cregion( SandBoxBoundary, 0.0, 3.5 ),
  340.             -cregion( SandBoxBoundary, 3.5, 8.0 ) );
  341. color( SandBoxSand, white );
  342. attrib( SandBoxSand, "rgb", "255,255,150" );
  343.  
  344. SandBox = list( SandBoxSand, SandBoxWall );
  345.  
  346. #
  347. # Rounded Slide.
  348. #
  349. RSlideHelix = cbspline( 4,
  350.                 list( ctlpt( E3, 0.0,  1.0, 0.0 ),
  351.                   ctlpt( E3, 0.267697, 1.0, 0.0 ),
  352.                   ctlpt( E3, 0.788770, 0.778080, 0.125925 ),
  353.                   ctlpt( E3, 1.10908, -0.011628, 0.251853 ),
  354.                   ctlpt( E3, 0.778636, -0.789588, 0.375925 ),
  355.                   ctlpt( E3, 0.0, -1.10356, 0.5 ),
  356.                   ctlpt( E3, -0.778635, -0.789590, 0.624075 ),
  357.                   ctlpt( E3, -1.10908, -0.011628, 0.748147 ),
  358.                   ctlpt( E3, -0.788770, 0.778077, 0.874075 ),
  359.                   ctlpt( E3, -0.267696, 1.0, 0.957408 ),
  360.                   ctlpt( E3, 0.0, 1.0, 1.000000 ) ),
  361.             list( 0, 0, 0, 0, 0.812947, 1.59055, 2.40349,  3.18109,
  362.                   3.95869, 4.77164, 5.54924,
  363.                               6.36219, 6.36219, 6.36219, 6.36219 ) );
  364. RSlideHelix2 = ( RSlideHelix + RSlideHelix * trans( vector( 0.0, 0.0, 1.0 ) ) )
  365.                         * scale( vector( 0.4, 0.4, 0.5 ) );
  366.  
  367. RSlideCross = cbspline( 3,
  368.                 list( ctlpt( E2,  0.0,  -0.5 ),
  369.                   ctlpt( E2, -0.1,  -0.5 ),
  370.                   ctlpt( E2, -0.5,  -0.3 ),
  371.                   ctlpt( E2, -0.5,   0.0 ),
  372.                   ctlpt( E2, -0.5,   0.05 ),
  373.                   ctlpt( E2, -0.45,  0.05 ),
  374.                   ctlpt( E2, -0.45, -0.25 ),
  375.                   ctlpt( E2,  0.0,  -0.45 ),
  376.                   ctlpt( E2,  0.45, -0.25 ),
  377.                   ctlpt( E2,  0.45,  0.05 ),
  378.                   ctlpt( E2,  0.5,   0.05 ),
  379.                   ctlpt( E2,  0.5,   0.0 ),
  380.                   ctlpt( E2,  0.5,  -0.3 ),
  381.                   ctlpt( E2,  0.1,  -0.5 ),
  382.                   ctlpt( E2,  0.0,  -0.5 ) ),
  383.                 list( KV_OPEN ) );
  384. RSlideSlopeSrf = sweepSrf( coerce( RSlideCross, E3 ) * rotz( -90 ) *
  385.                     scale( vector( 0.7, 0.7, 0.7 ) ),
  386.                RSlideHelix2,
  387.                vector( 0, 0, 1 ) );
  388. attrib( RSlideSlopeSrf, "resolution", 2.0 );
  389. RSlideSlopeEndCrv = cSurface( RSlideSlopeSrf, ROW, 12.7243 );
  390. RSlideSlopeEnd = list( ruledSrf( cRegion( RSlideSlopeEndCrv, 0.0, 3.25 ),
  391.                          -cRegion( RSlideSlopeEndCrv, 3.25, 6.5 ) ),
  392.                ruledSrf( cRegion( RSlideSlopeEndCrv, 6.5, 9.75 ),
  393.                      -cRegion( RSlideSlopeEndCrv, 9.75, 13 ) ) );
  394. RSlideSlope = list( RSlideSlopeEnd, RSlideSlopeSrf );
  395. color( RSlideSlope, yellow );
  396. attrib( RSlideSlope, "reflect", 0.5 );
  397. attrib( RSlideSlope, "rgb", "255,255,55" );
  398.  
  399. RSlideCenter = surfRev( cbspline( 3,
  400.                   list( ctlpt( E3, 0.1,  0.0, 0.0 ),
  401.                         ctlpt( E3, 0.1,  0.0, 1.1 ),
  402.                         ctlpt( E3, 0.11, 0.0, 1.1 ),
  403.                         ctlpt( E3, 0.11, 0.0, 1.11 ),
  404.                         ctlpt( E3, 0.11, 0.0, 1.11 ),
  405.                         ctlpt( E3, 0.2, 0.0, 1.11 ),
  406.                         ctlpt( E3, 0.2, 0.0, 1.4 ),
  407.                         ctlpt( E3, 0.001, 0.0, 1.4 ) ),
  408.                 list( KV_OPEN ) ) );
  409. color( RSlideCenter, green );
  410. attrib( RSlideCenter, "rgb", "55,255,55" );
  411.  
  412. RSlideLadderSideCrv = cbspline( 3,
  413.                 list( ctlpt( E3, 0.0, 0.0, 0.0 ),
  414.                       ctlpt( E3, 0.0, 0.0, 0.8 ),
  415.                       ctlpt( E3, 0.0, 0.0, 0.9 ),
  416.                       ctlpt( E3, 0.1, 0.0, 0.9 ),
  417.                       ctlpt( E3, 0.9, 0.0, 0.9 ) ),
  418.                 list( KV_OPEN ) ) *
  419.               rotz( 180 ) *
  420.               trans( vector( 0.85, 0.1, 0.0 ) );
  421. RSlideLadderSide = sweepSrf( circle( vector( 0.0, 0.0, 0.0 ), 0.015 ),
  422.                  RSlideLadderSideCrv,
  423.                  off );
  424. RSlideLadderStep = extrude( circle( vector( 0.0, 0.0, 0.0 ), 0.01 ),
  425.                 vector( 0.0, 0.0, 0.61 ) ) * rotx( 90 );
  426. RSlideLadder = list( RSlideLadderSide,
  427.              RSlideLadderSide * trans( vector( 0.0, 0.61, 0.0 ) ),
  428.              RSlideLadderStep * trans( vector( 0.85, 0.71, 0.2 ) ),
  429.              RSlideLadderStep * trans( vector( 0.85, 0.71, 0.4 ) ),
  430.              RSlideLadderStep * trans( vector( 0.85, 0.71, 0.6 ) ),
  431.              RSlideLadderStep * trans( vector( 0.85, 0.71, 0.6 ) ),
  432.              RSlideLadderStep * trans( vector( 0.85, 0.71, 0.8 ) ),
  433.              RSlideLadderStep * trans( vector( 0.75, 0.71, 0.9 ) ),
  434.              RSlideLadderStep * trans( vector( 0.55, 0.71, 0.9 ) ),
  435.              RSlideLadderStep * trans( vector( 0.35, 0.71, 0.9 ) ),
  436.              RSlideLadderStep * trans( vector( 0.15, 0.71, 0.9 ) ) );
  437. color( RSlideLadder, red );
  438. attrib( RSlideLadder, "rgb", "255,55,55" );
  439.  
  440. RSlide = list( RSlideSlope, RSlideCenter, RSlideLadder );
  441.  
  442. #
  443. # Swing for two.
  444. #
  445.  
  446. TSwingSupport1 = list( extrude( circle( vector( 0.0, 0.0, -0.02 ), 0.015 ),
  447.                     vector( 0.0, 0.0, 0.22 ) ) *
  448.                    rotx( 20 ) *
  449.                trans( vector( -0.7, 0.07, 0.0 ) ),
  450.                extrude( circle( vector( 0.0, 0.0, -0.02 ), 0.015 ),
  451.                     vector( 0.0, 0.0, 0.22 ) ) *
  452.                    rotx( -20 ) *
  453.                trans( vector( -0.7, -0.07, 0.0 ) ) );
  454. TSwingSupport2 = TSwingSupport1 * trans( vector( 1.4, 0.0, 0.0 ) );
  455. TSwingSupport = list( TSwingSupport1, TSwingSupport2,
  456.               extrude( circle( vector( 0.0, 0.0, 0.0 ), 0.015 ),
  457.                    vector( 0.0, 0.0, 1.4 ) ) *
  458.                        roty( 90 ) *
  459.                        trans( vector( -0.7, 0.0, 0.2 ) ) );
  460. color( TSwingSupport, blue );
  461. attrib( TSwingSupport, "rgb", "50,50,255" );
  462.  
  463. TSwingChairSupport = extrude( circle( vector( 0.0, 0.0, 0.0 ), 0.015 ),
  464.                   vector( 0.0, 0.0, 1.4 ) ) *
  465.              rotx( 90 ) *
  466.              trans( vector( 0.0, 0.7, 0.215 ) );
  467. color( TSwingChairSupport, green );
  468. attrib( TSwingChairSupport, "rgb", "50,255,50" );
  469.  
  470. TSwingChair = list( TSwingChairSupport,
  471.             ChairBase *
  472.             scale( vector( 0.3, 0.3, 0.3 ) ) *
  473.             trans( vector( -0.065, 0.7, 0.235 ) ),
  474.             ChairBase *
  475.             scale( vector( 0.3, 0.3, 0.3 ) ) *
  476.             trans( vector( -0.065, 0.7, 0.235 ) ) *
  477.             rotz( 180 ) );
  478.  
  479. TSwingChair1 = TSwingChair *
  480.            trans( vector( 0.0, 0.0, -0.215 ) ) *
  481.            rotx( 16 ) *
  482.            trans( vector( 0.4, 0.0, 0.215 ) );
  483. TSwingChair2 = TSwingChair *
  484.            trans( vector( 0.0, 0.0, -0.215 ) ) *
  485.            rotx( -16 ) *
  486.            trans( vector( -0.4, 0.0, 0.215 ) );
  487.  
  488. TSwing = list( TSwingSupport, TSwingChair1, TSwingChair2 );
  489.  
  490. #
  491. # Network
  492. #
  493.  
  494. NetworkX1 = list( extrude( circle( vector( 0.0, 0.0, 0.0 ), 0.01 ),
  495.                vector( 0.0, 0.0, 1.0 ) ) *
  496.               rotx( 90 ) *
  497.               trans( vector( 0.0, 0.0, 0.0 ) ),
  498.           extrude( circle( vector( 0.0, 0.0, 0.0 ), 0.01 ),
  499.                vector( 0.0, 0.0, 1.0 ) ) *
  500.               rotx( 90 ) *
  501.               trans( vector( 0.0, 0.0, 0.25 ) ),
  502.           extrude( circle( vector( 0.0, 0.0, 0.0 ), 0.01 ),
  503.                vector( 0.0, 0.0, 1.0 ) ) *
  504.               rotx( 90 ) *
  505.               trans( vector( 0.0, 0.0, 0.5 ) ),
  506.           extrude( circle( vector( 0.0, 0.0, 0.0 ), 0.01 ),
  507.                vector( 0.0, 0.0, 1.0 ) ) *
  508.               rotx( 90 ) *
  509.               trans( vector( 0.0, 0.0, 0.75 ) ),
  510.           extrude( circle( vector( 0.0, 0.0, 0.0 ), 0.01 ),
  511.                vector( 0.0, 0.0, 1.0 ) ) *
  512.               rotx( 90 ) *
  513.               trans( vector( 0.0, 0.0, 1.0 ) ) );
  514. NetworkX = list( NetWorkX1,
  515.          NetWorkX1 * trans( vector( 0.25, 0.0, 0.0 ) ),
  516.          NetWorkX1 * trans( vector( 0.5,  0.0, 0.0 ) ),
  517.          NetWorkX1 * trans( vector( 0.75, 0.0, 0.0 ) ),
  518.          NetWorkX1 * trans( vector( 1.0,  0.0, 0.0 ) ) );
  519. color( NetworkX, green );
  520. attrib( NetworkX, "rgb", "50,255,50" );
  521.  
  522. NetworkY = NetworkX * rotz( 90 ) * trans( vector( 0.0, -1.0, 0.0 ) );
  523. color( NetworkY, red );
  524. attrib( NetworkY, "rgb", "255,50,50" );
  525.  
  526. NetworkZ = NetworkX * rotx( 90 ) * trans( vector( 0.0, 0.0, 1.0 ) );
  527. color( NetworkZ, yellow );
  528. attrib( NetworkZ, "rgb", "255,255,50" );
  529.  
  530. Network = list( NetworkX, NetworkY, NetworkZ );
  531.  
  532. #
  533. # Place all the toys in the playground.
  534. #
  535. PlayGround = ruledSrf( ctlpt( E2, -1.0, -1.0 ) + ctlpt( E2, -1.0,  1.0 ),
  536.                ctlpt( E2,  1.0, -1.0 ) + ctlpt( E2,  1.0,  1.0 ) ) *
  537.          scale( vector( 15.0, 15.0, 15.0 ) );
  538. color( PlayGround, white );
  539. attrib( PlayGround, "rgb", "25,25,25" );
  540. attrib( PlayGround, "reflect", 0.25 );
  541.  
  542. PlayCarousel = Carousel * trans( vector( -1, -2, 0 ) );
  543. PlaySwing = Swing * trans( vector( 1, -2, 0 ) );
  544. PlaySlideSand = list( Slide, SandBox ) * trans( vector( 1.3, 0.7, 0 ) );
  545. PlaySlide2 = Slide * trans( vector( 0.5, -4.5, 0 ) );
  546. PlayRSlide = RSlide * trans( vector( -2.0, 0.5, 0 ) );
  547. PlayTSwing1 = TSwing * trans( vector( 3, -1, 0 ) );
  548. PlayTSwing2 = TSwing * trans( vector( 3, -3, 0 ) );
  549. PlayNetwork = Network * trans( vector( -4, -1.5, 0 ) );
  550.  
  551. All = list( PlayGround, PlayCarousel, PlaySwing, PlaySlideSand, PlaySlide2,
  552.         PlayRSlide, PlayTSwing1, PlayTSwing2, PlayNetwork );
  553. save( "playgrnd", All );
  554.  
  555. #
  556. # This is a very complex model. Reduce display accuracy.
  557. #
  558. viewobj(axes);
  559. viewstate("CrsrAprx");
  560. viewstate("CrsrAprx");
  561. viewstate("CrsrAprx");
  562. viewstate("CrsrAprx");
  563. viewstate("LessIso");
  564. viewstate("LessIso");
  565. viewstate("LessIso");
  566.  
  567. viewobj( All );
  568.